iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
Software Development

溫柔學姐的Kotlin補課/教學系列 第 23

程式精煉唯熟練爾:高階函式 預設參數 high-order function, default parameter

  • 分享至 

  • xImage
  •  

「在寫什麼呀?」唯心用手指戳了戳詩憶的額頭。「眉頭都皺起來了。」

「喔,學姐,我在練習高階函式,把函式命名成變數很容易,但是寫成參數的時候感覺怪怪的,達不到想要的結果。」

「妳想寫什麼?」

「我想寫一個每次列印都會附帶喵喵叫的函式,目前寫出來的卻只印出meow~的部分。」

fun main() {
    meowPrint(printer = { println("meow~") })
}

fun meowPrint(string: String = "Hello World", printer: (String)-> Unit) {
    printer(string)
}

唯心看了一遍程式內容。「喔,這是因為妳固定println的傳入參數值了呀,妳的寫法和下面的寫法是等價的。妳都會寫Hello World這種預設參數了,沒想到卻會卡在這裡啊。」

fun main() {
    meowPrint(printer = { string: String -> println("meow~") })
}

fun meowPrint(string: String = "Hello World", printer: (String)-> Unit) {
    printer(string)
}

「原來如此,學姐,我懂了,我再改改看。」

fun main() {
    meowPrint(printer = { string: String -> println(string)})
}

fun meowPrint(string: String = "Hello World", printer: (String)-> Unit) {
    printer(string)
    printer("meow~")
}

這次程式總算印出詩憶期待的結果。

Hello World
meow~

今天訂下的練習目標達到後,她便放寬心情和唯心聊起來。「預設參數真的很方便,之前學姐提過的overloading多載,本以為參數不同只能寫成多個函式,沒想到也可以用預設參數的寫法來處理。」

「對呀。程式寫得越多,就可以找到更精煉的寫法。」唯心微笑稱讚詩憶寫法的優點。「就像如果有指定參數名稱,就不用在意參數的順序。」


上一篇
語法糖小測驗: Scope functions & Extension function
下一篇
放開那本字典:匿名函式 anonymous function
系列文
溫柔學姐的Kotlin補課/教學31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言